import random
import string


class PasswordRandom:
    def __init__(self):
        self.string_choice = {
            "1": [i for i in string.ascii_lowercase],
            "2": [i for i in string.digits],
            "3": [i for i in string.punctuation],
            "4": [i for i in string.ascii_uppercase],
        }
        self.target()

    def target(self):
        choices = """\nSTEP_2: 请选择组成密码的字符类别

        1-小写字母
        2-数字
        3-符号
        4-大写字母

        示例A：只需小写字母，请输入数字【1】
        示例B：需要小写+数字，请输入数字【12】
        示例C：需要符号+大写，请输入数字【34】
        示例D：需要小写+数字+符号+大写，请输入数字【1234】

        请选择类别，并输入相应数字："""
        pass_len = int(input("\nSTEP_1: 请输入所需的密码长度（字符数）："))
        choices_id = input(choices)

        string_all = []
        for i in choices_id:
            a = self.string_choice[i]
            string_all.extend(a)

        password_list = random.choices(string_all, k=pass_len)
        password_string = "".join(password_list)
        print("\n-----------------")
        print("随机密码：{}\n".format(password_string))


PasswordRandom()
